double latdeg, lngdeg;
char lngdir, latdir;
int hms;
- char valid;
+ char valid = 0;
waypoint *waypt;
if (trk_head == NULL) {
if (lngdir == 'W') lngdeg = -lngdeg;
waypt->longitude = ddmm2degrees(lngdeg);
+ if (curr_waypt && (read_mode == rm_serial)) {
+ waypt_free(curr_waypt);
+ }
curr_waypt = waypt;
}
char lngdir, latdir;
double hms;
double alt;
- int fix;
- int nsats;
+ int fix = fix_unknown;
+ int nsats = 0;
double hdop;
char altunits;
waypoint *waypt;
break;
}
+ if (curr_waypt && (read_mode == rm_serial)) {
+ waypt_free(curr_waypt);
+ }
curr_waypt = waypt;
}
if (lngdir == 'W') lngdeg = -lngdeg;
waypt->longitude = ddmm2degrees(lngdeg);
+ if (curr_waypt && (read_mode == rm_serial)) {
+ waypt_free(curr_waypt);
+ }
curr_waypt = waypt;
}
nmea_parse_one_line(ibuf);
if (lt != last_read_time) {
if (last_read_time) {
+ waypoint *w = curr_waypt;
+
lt = last_read_time;
- return waypt_dupe(curr_waypt);
+ curr_waypt = NULL;
+
+ return w;
}
}
}